<!DOCTYPE html/css>
<html lang="en-US">
<head>
	<title>FLuaG documentation</title>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
	<meta name="description" content="FLuaG documentation"  />
	<meta name="keywords" content="OpenGL,Lua,Avisynth,Filter,Video,Audio"  />
	<meta name="author" content="Youka"  />
	<style type="text/css">
	ul{
		margin: 0px;
	}
	A{
		text-decoration:none;
	}
	A:hover{
		color:#FF0000;
	}
	h1{
		width:12%;
		font-family:Times New Roman;
		font-size:40pt;
		font-weight:bolder;
		letter-spacing:3pt;
		color:#0000FF;
		border-style:outset;
		border-width:thick;
		border-color:#C0C0C0;
		background:#C0C0C0;
		text-shadow:4px 4px 4px black;
		margin-top: 10px;
		margin-bottom: 10px;
	}
	h2{
		font-family:Arial;
		font-size:24pt;
		font-weight:bold;
		color:#000000;
		background:#0000FF;
		text-shadow:0px 0px 4px white;
		margin-top: 20px;
		margin-bottom: 5px;
	}
	h3{
		font-family:Arial;
		font-size:20pt;
		font-weight:bold;
		color:#000000;
		background:#D0D0D0;
		margin-top: 20px;
		margin-bottom: 5px;
	}
	h4{
		font-family:Arial;
		font-size:16pt;
		font-weight:bold;
		color:#000000;
		background:#B0B0B0;
		margin-top: 20px;
		margin-bottom: 5px;
	}
	.subtitle{
		font-family:Arial;
		font-size:14pt;
		font-weight:bold;
		color:#000000;
		background:#909090;
		border-style:ridge;
		border-width:medium;
		border-color:#808080;
		margin-top: 20px;
		margin-bottom: 5px;
	}
	.func{
		font-family:Arial;
		font-size:12pt;
		margin-top: 10px;
		text-indent:5;
		border-style:solid;
		border-width:0 0 0 10;
		border-color:#101010;
		font-weight:bold;
		letter-spacing:1;
	}
	</style>
</head>
<body bgcolor="#F0F0F0" text="#000000" link="#000000" alink="#000000" vlink="#000000">
<a name="Top" /><h1>FLuaG</h1>
<div style="width:16%;background:#FFFFFF;border-style:ridge;border-width:thick;border-color:#0000FF;">
<ul><b><font size=4>
<li><a href="#Definition">Definition</a></li>
<li><a href="#Features">Features</a></li>
<li><a href="#Usage">Usage</a><ul></b>
<li><a href="#Plugin">Plugin</a></li>
<li><a href="#Audio(Usage)">Audio</a></li>
<li><a href="#Video(Usage)">Video</a></li><b></ul></li>
<li><a href="#Examples">Examples</a></li>
<li><a href="#Reference">Reference</a><ul>
<li><a href="#Standard">Standard</a><ul></b>
<li><a href="#Base">Base</a></li>
<li><a href="#Math">Math</a></li>
<li><a href="#String">String</a></li>
<li><a href="#Table">Table</a></li></ul></li>
<li><a href="#Media_access"><b>Media access</b></a><ul>
<li><a href="#Audio(Reference)">Audio</a></li><ul>
<li><a href="#Attributes(Audio)">Attributes</a></li>
<li><a href="#Functions(Audio)">Functions</a></li></ul></li>
<li><a href="#Video(Reference)">Video</a></li><ul>
<li><a href="#Attributes(Video)">Attributes</a></li>
<li><a href="#Functions(Video)">Functions</a></li></ul></li>
<li><a href="#Userdata(Reference)">Userdata</a></li><ul>
<li><a href="#Attributes(Userdata)">Attributes</a></li>
<li><a href="#Functions(Userdata)">Functions</a></li></ul></li></ul></li>
<li><a href="#Graphics"><b>Graphics</b></a><ul>
<li><a href="#GL_1.1">GL 1.1</a><ul>
<li><a href="#Attributes(GL_1.1)">Attributes</a></li>
<li><a href="#Functions(GL_1.1)">Functions</a></li></ul></li>
<li><a href="#GL_1.2">GL 1.2</a><ul>
<li><a href="#Attributes(GL_1.2)">Attributes</a></li>
<li><a href="#Functions(GL_1.2)">Functions</a></li></ul></li>
<li><a href="#GL_1.3">GL 1.3</a><ul>
<li><a href="#Attributes(GL_1.3)">Attributes</a></li>
<li><a href="#Functions(GL_1.3)">Functions</a></li></ul></li>
<li><a href="#GL_1.4">GL 1.4</a><ul>
<li><a href="#Attributes(GL_1.4)">Attributes</a></li>
<li><a href="#Functions(GL_1.4)">Functions</a></li></ul></li>
<li><a href="#GL_1.5">GL 1.5</a><ul>
<li><a href="#Attributes(GL_1.5)">Attributes</a></li>
<li><a href="#Functions(GL_1.5)">Functions</a></li></ul></li>
<li><a href="#GL_2.0">GL 2.0</a><ul>
<li><a href="#Attributes(GL_2.0)">Attributes</a></li>
<li><a href="#Functions(GL_2.0)">Functions</a></li></ul></li>
<li><a href="#GL_2.1">GL 2.1</a><ul>
<li><a href="#Attributes(GL_2.1)">Attributes</a></li>
<li><a href="#Functions(GL_2.1)">Functions</a></li></ul></li>
<li><a href="#Framebuffer">Framebuffer</a><ul>
<li><a href="#Attributes(Framebuffer)">Attributes</a></li>
<li><a href="#Functions(Framebuffer)">Functions</a></li></ul></li>
<li><a href="#Imaging">Imaging</a><ul>
<li><a href="#Attributes(Imaging)">Attributes</a></li>
<li><a href="#Functions(Imaging)">Functions</a></li></ul></li>
<li><a href="#GLU_1.2">GLU 1.2</a><ul>
<li><a href="#Attributes(GLU_1.2)">Attributes</a></li>
<li><a href="#Functions(GLU_1.2)">Functions</a></li></ul></li>
<li><a href="#FL_0.4">FL 0.4</a></li></ul></li><b></ul></li>
<li><a href="#FAQ">FAQ</a></li>
<li><a href="#Links">Links</a></li>
</font></b></ul>
</div>
<a name="Definition" /><h2><a href="#Top">Definition</a></h2>
<b>FLuaG</b> (<i>Floating Lua Graphics</i>) is an Avisynth plugin for video/audio data editing via Lua scripting.<br><br>
Allowing to transfer image/sample data between Avisynth and Lua, it works like a filter SDK. Inside Lua scripts it's possible to write 3D effects with OpenGL or others things by importing libraries to the Lua API.<br>
Regrettably FLuaG slows the process much more than an original filter in C/C++ but it makes the work easier.
<a name="Features" /><h2><a href="#Top">Features</a></h2>
<ul>
<li>All in one file</li>
<li>Video & audio access</li>
<li>OpenGL 2.1 + GL_ARB_imaging + GL_ARB_framebuffer_object support</li>
<li>Text extents & outline path</li>
<li>PNG image loading & saving</li>
<li>Math geometry functions</li>
<li>Onscreen rendering</li>
</ul>
<a name="Usage" /><h2><a href="#Top">Usage</a></h2>
First, let's have a look how FLuaG works internally to understand what happens:
<table bgcolor="#FFFFFF" border=2 rules="none">
<tr valign="top">
<td><font size=1 color="red">Video script?</font><br>-----------></td><td style="border:thin dotted black"><font size=2>Convert video to RGB32<br>Create OGL window<br>Create Lua process<br>-define standard libraries<br>-define OGL functions<br>-define video meta data variables<br>-define video access functions<br><b>Run video script with Lua process</b></font></td><td><font size=1>Into filter process</font><br>-----------><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<font size=1 color="red">Onscreen?</font><br>&nbsp;&nbsp;&nbsp;&nbsp;\/<br><table><tr><td style="border:thin dotted black">Show OGL<br>window</td></tr></table><font size=2></font></td><td><table><tr><td style="border:thin dotted black;"><font size=2>Set video data for access<br><b>Run <i>GetFrame</i> function</b></font></td></tr></table>&nbsp;&nbsp;&nbsp;&nbsp;/\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/\&nbsp;|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|_|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size=1>Get frame</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</td>
</tr>
<tr>
<td><font size=1 color="red">Userdata?</font><br>-----------></td><td style="border:thin dotted black"><font size=2>Convert clips to RGB32 & 16bit</font></td><td colspan=2>-----------------|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/</td>
</tr>
<tr valign="top">
<td><font size=1 color="red">Audio script?</font><br>-----------></td><td style="border:thin dotted black"><font size=2>Convert audio to 16bit/32bit(<font size=1 color="red">samples32?</font>)<br>Create Lua process<br>-define standard libraries<br>-define audio meta data variables<br>-define audio access functions<br><b>Run audio script with Lua process</b></font></td><td><font size=1>Into filter process</font><br>-----------></td><td><table><tr><td style="border:thin dotted black;"><font size=2>Set audio data for access<br><b>Run <i>GetSamples</i> function</b></font></td></tr></table>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/\&nbsp;|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|_|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size=1>Get samples</font></td>
</tr>
</table>
<font color="red">Red marked</font> steps have to be true to continue this process.<br>
<b>Bold marked</b> actions are your turns.
<a name="Plugin" /><h3><a href="#Top">Plugin</a></h3>
FLuaG is a C++ plugin, so you have to load it simply with <i>LoadPlugin</i>.
<table frame="box" bgcolor=#FFFFFF><tr><td>LoadPlugin("SYSTEM_PATH\FLuaG.dll")</td></tr></table>
Now you can call function FLuaG, defined as...
<table frame="box" bgcolor=#FFFFFF><tr><td><b>FLuaG(clip c, string video = void, string audio = void, bool onscreen = false, bool samples32 = false, string userdata = void)</b></td></tr></table>
<font size=2>
<b>clip c</b>: Video and/or audio clip. Needed!<br>
<b>string video</b>: Lua script for editing video data. Optional.<br>
<b>string audio</b>: Lua script for editing audio data. Optional.<br>
<b>bool onscreen</b>: Window for OGL rendering visible? Optional.<br>
<b>bool samples32</b>: Samples with size of 32 bit instead of 16 bit? Optional.<br>
<b>string userdata</b>: String containing avs variable names for usage. Optional.<br>
</font>
<a name="Audio(Usage)" /><h3><a href="#Top">Audio</a></h3>
For audio editing, a Lua script has to be send to FLuaG for this job.<br>
It will be called at Avisynth startup. If there's a <i>GetSamples</i> function defined, this function will be called with index and time in milliseconds of current start sample and number of samples this function run during playback.
<table frame="box" bgcolor=#FFFFFF><tr><td>function GetSamples(start_sampe_index, start_sample_ms, count)<br><br>end</td></tr></table>
For loading current samples, call <i>LoadSamples()</i>. It returns a table with 16bit or 32bit samples, depending on FLuaG parameter <i>samples32</i>.<br>
For saving new data to current samples, call <i>SaveSampes(samples)</i>. <i>samples</i> should be a table with same size like loadable samples table and valid numbers.<br>
Meta data about audio stream are stored in global variables. There're AUDIO_CHANNELS (number of audio channels), AUDIO_SAMPLE_RATE (frequency = samples/second per channel) and AUDIO_SAMPLES (number of samples per channel).
<a name="Video(Usage)" /><h3><a href="#Top">Video</a></h3>
For video editing, a Lua script has to be send to FLuaG for this job.<br>
It will be called at Avisynth startup. If there's a <i>GetFrame</i> function defined, this function will be called with index and time in milliseconds of current frame during playback.
<table frame="box" bgcolor=#FFFFFF><tr><td>function GetFrame(frame_index, frame_ms)<br><br>end</td></tr></table>
For loading current frame data, call <i>LoadFrame()</i>. It returns a table with RGBA data.<br>
For loading current frame data directly to OGL context, call <i>LoadFrameToContext()</i>.<br>
For saving new data to current frame, call <i>SaveFrame(frame)</i>. <i>frame</i> should be a table with same size like loadable frame and valid RGBA data.<br>
For saving new data to current frame from OGL context, call <i>SaveFrameFromContext()</i>.<br>
Meta data about video stream are stored in global variables. There're VIDEO_WIDTH (width of frames in pixels), VIDEO_HEIGHT (height of frames in pixels), VIDEO_FPS (number of frames per second) and VIDEO_FRAMES (number of frames).
<a name="Examples" /><h2><a href="#Top">Examples</a></h2>
<b>test.avs</b>
<table frame="box" bgcolor=#FFFFFF><tr><td>BlankClip(length=250, width=704, height=396, pixel_type="RGB32", fps=25, audio_rate=48000, channels=2, sample_type="16bit")<br>
<br>
point_size = 50<br>
FLuaG(audio="test_audio.lua", video="test_video.lua", onscreen=false, samples32=false, userdata="point_size")</td></tr></table>
<br>
<b>test_audio.lua</b>
<table frame="box" bgcolor=#FFFFFF><tr><td>function GetSamples(start_sample_index, start_sample_ms, count)<br>
&nbsp;&nbsp;&nbsp;&nbsp;local samples = {}<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;for i=1, count * AUDIO_CHANNELS do<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;samples[i] = math.random(-32768, 32767)<br>
&nbsp;&nbsp;&nbsp;&nbsp;end<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;SaveSamples(samples)<br>
end</td></tr></table>
<br>
<b>test_video.lua</b>
<table frame="box" bgcolor=#FFFFFF><tr><td>glPointSize(USERDATA[1])<br>
<br>
function GetFrame(frame_index, frame_ms)<br>
&nbsp;&nbsp;&nbsp;&nbsp;LoadFrameToContext()<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;glBegin(GL_POINTS)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glVertex(0,0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;glEnd()<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;SaveFrameFromContext()<br>
end</td></tr></table>
<hr>
<b>test.avs</b>: using FLuaG on a blank clip to edit audio data by "test_audio.lua" and video data by "test_video.lua"<br>
<b>test_audio.lua</b>: random noise<br>
<b>test_video.lua</b>: point at mid<br>
<br>
<u>For more examples, look into the "examples" folder from FLuaG download.</u>
<a name="Reference" /><h2><a href="#Top">Reference</a></h2>
Here are all functions and variables listed which are added to standard Lua API by FLuaG.
<a name="Standard" /><h3><a href="#Top">Standard</a></h3>
Here are all functions listed which extend the standard libraries of Lua.
<a name="Base" /><h4><a href="#Top">Base</a></h4>
<div class="func"><i>t</i> = <u>pack</u>(<i>...</i>)</div>
Opponent of <i>unpack</i> function.
<div class="func"><u>print</u>(<i>...</i>)</div>
Converts given arguments to text and writes everything as line to file defined by <i>printpath</i> call.
<div class="func"><u>printpath</u>(<i>filepath</i>)</div>
Defines target file for <i>print</i> function. Default is "log.txt".
<a name="Math" /><h4><a href="#Top">Math</a></h4>
<div class="func"><i>x, y, z</i> = <u>math.bezier</u>(<i>pos, points</i>)</div>
Calculates point <i>x|y|z</i> on bezier curve, described by given <i>points</i>, defined by factor <i>pos</i>.
<div class="func"><i>nx, ny, nz</i> = <u>math.calcnormal</u>(<i>x1, y1, z1, x2, y2, z2, x3, y3, z3</i>)</div>
Calculates normal vector of vector a in <i>x2-x1</i>, <i>y2-y1</i> and <i>z2-z1</i> direction and vector b in <i>x3-x1</i>, <i>y3-y1</i> and <i>z3-z1</i> direction.
<div class="func"><i>num</i> = <u>math.clamp</u>(<i>num, min, max</i>)</div>
Clamps number <i>num</i> to range between <i>min</i> and <i>max</i>.
<div class="func"><i>nx, ny, nz</i> = <u>math.cross</u>(<i>x1, y1, z1, x2, y2, z2</i>)</div>
Calculates cross product of vector a in <i>x1</i>, <i>y1</i> and <i>z1</i> direction and vector b in <i>x2</i>, <i>y2</i> and <i>z2</i> direction.
<div class="func"><i>num</i> = <u>math.dot</u>(<i>x1, y1, z1, x2, y2, z2</i>)</div>
Calculates dot/scalar product of vector a in <i>x1</i>, <i>y1</i> and <i>z1</i> direction and vector b in <i>x2</i>, <i>y2</i> and <i>z2</i> direction.
<div class="func"><i>x, y</i> = <u>math.ellipse</u>(<i>mx, my, width, height, angle</i>)</div>
Calculates point <i>x|y</i> with given <i>angle</i> on outline of ellipse with center point <i>mx|my</i> and given <i>width</i> and <i>height</i>.
<div class="func"><i>num</i> = <u>math.interpolate</u>(<i>a, b, pct</i>)</div>
Interpolates number <i>a</i> to number <i>b</i> by factor <i>pct</i>.
<div class="func"><i>hit</i> = <u>math.intriangle</u>(<i>px, py, pz, x1, y1, z1, x2, y2, z2, x3, y3, z3</i>)</div>
Tests point <i>px|py|pz</i> occurence in triangle with edge points <i>x1|y1|z1</i>, <i>x2|y2|z2</i> and <i>x3|y3|z3</i>.
<div class="func"><i>len</i> = <u>math.length</u>(<i>x, y, z</i>)</div>
Calculates length of vector in <i>x</i>, <i>y</i> and <i>z</i> direction.
<div class="func"><i>...</i> = <u>math.normalize</u>(<i>...</i>)</div>
Normalizes given numbers.
<div class="func"><i>num</i> = <u>math.randomsteps</u>(<i>start, end, step</i>)</div>
Returns random number <i>num</i> between <i>start</i> and <i>end</i> with offsets of <i>step</i>.
<div class="func"><i>rx, ry, rz</i> = <u>math.reflect</u>(<i>x, y, z, nx, ny, nz</i>)</div>
Calculates reflection vector in <i>rx</i>, <i>ry</i> and <i>rz</i> direction of ray vector in <i>x</i>, <i>y</i> and <i>z</i> direction, reflected on plain with normal vector in <i>nx</i>, <i>ny</i> and <i>nz</i> direction.
<div class="func"><i>int</i> = <u>math.round</u>(<i>num</i>)</div>
Rounds number <i>num</i> to integer.
<div class="func"><i>n</i> = <u>math.sign</u>(<i>num</i>)</div>
If <i>num</i> is less than 0, then <i>n</i> is -1. If <i>num</i> is greater than 0, then <i>n</i> is 1. If <i>num</i> is equal to 0, then <i>n</i> is 0.
<a name="String" /><h4><a href="#Top">String</a></h4>
<div class="func"><i>size</i> = <u>string.ucharlen</u>(<i>s, i</i>)</div>
Returns size in bytes of character at position <i>i</i> in string <i>s</i>.
<div class="func"><i>itor</i> = <u>string.uchars</u>(<i>s</i>)</div>
Returns iterator function for accessing all unicode characters of given string <i>s</i>. Each iterator call returns index and character or nil.
<div class="func"><i>len</i> = <u>string.ulen</u>(<i>s</i>)</div>
Returns length of string <i>s</i> in unicode characters.
<a name="Table" /><h4><a href="#Top">Table</a></h4>
<div class="func"><i>t2</i> = <u>table.copy</u>(<i>t1</i>)</div>
Creates a deep copy <i>t2</i> of table <i>t1</i>.
<div class="func"><i>n</i> = <u>table.max</u>(<i>t</i>)</div>
Returns size <i>n</i> of table <i>t</i> (including numeric+literal indices).
<div class="func"><i>s</i> = <u>table.tostring</u>(<i>t</i>)</div>
Returns table content description <i>s</i> of table <i>t</i>.
<a name="Media_access" /><h3><a href="#Top">Media access</a></h3>
Here are all functions and variables listed to work with audio/video streams.
<a name="Audio(Reference)" /><h4><a href="#Top">Audio</a></h4>
<p><a name="Attributes(Audio)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>AUDIO_CHANNELS
AUDIO_SAMPLE_RATE
AUDIO_SAMPLES</pre>
<p><a name="Functions(Audio)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><i>samples</i> = <u>LoadSamples</u>()</div>
Returns table <i>samples</i> with 16/32 bit numbers. These are the samples at the current position in audio stream. Their start index you get from the <i>GetSamples</i> function call. The number of samples differs from file to file.
<div class="func"><u>SaveSamples</u>(<i>samples</i>)</div>
Saves table <i>samples</i> at current audio stream position. Number of table elements have to be equal to the number of elements from table you get from <i>LoadSamples()</i>. Table elements should be 16/32 bit numbers.
<a name="Video(Reference)" /><h4><a href="#Top">Video</a></h4>
<p><a name="Attributes(Video)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>VIDEO_WIDTH
VIDEO_HEIGHT
VIDEO_FPS
VIDEO_FRAMES</pre>
<p><a name="Functions(Video)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><i>frame</i> = <u>LoadFrame</u>()</div>
Returns table <i>frame</i> with RGBA data. This is the frame at the current position in video stream. His index you get from the <i>GetFrame</i> function call. Table size = VIDEO_WIDTH * VIDEO_HEIGHT * 4.
<div class="func"><u>SaveFrame</u>(<i>frame</i>)</div>
Saves table <i>frame</i> at current video stream position. Number of table elements have to be equal to VIDEO_WIDTH * VIDEO_HEIGHT * 4. Table elements have to be RGBA data, so they should be 8 bit numbers.
<div class="func"><u>LoadFrameToContext</u>()</div>
Transfers RGBA data from the frame at the current position in video stream to OGL context. Frame index you get from the <i>GetFrame</i> function call.
<div class="func"><u>SaveFrameFromContext</u>()</div>
Transfers RGBA data from OGL context to the frame at the current position in video stream.
<a name="Userdata(Reference)" /><h4><a href="#Top">Userdata</a></h4>
<p><a name="Attributes(Userdata)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>USERDATA</pre>
<p><a name="Functions(Userdata)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><i>info</i> = <u>clip:Info</u>()</div>
Returns table <i>info</i> with video and audio meta information.
<div class="func"><i>samples</i> = <u>clip:LoadSamples</u>(start_sample_index, count)</div>
Returns table <i>samples</i> with 16 bit samples.
<div class="func"><i>frame</i> = <u>clip:LoadFrame</u>(frame_index)</div>
Returns table <i>frame</i> with RGBA data.
<a name="Graphics" /><h3><a href="#Top">Graphics</a></h3>
Here are all functions and variables listed to work with OpenGL.
<a name="GL_1.1" /><h4><a href="#Top">GL 1.1</a></h4>
<p><a name="Attributes(GL_1.1)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>GL_FALSE
GL_TRUE
GL_POINTS
GL_LINES
GL_LINE_LOOP
GL_LINE_STRIP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
GL_VERTEX_ARRAY
GL_NORMAL_ARRAY
GL_COLOR_ARRAY
GL_INDEX_ARRAY
GL_TEXTURE_COORD_ARRAY
GL_EDGE_FLAG_ARRAY
GL_VERTEX_ARRAY_SIZE
GL_VERTEX_ARRAY_TYPE
GL_VERTEX_ARRAY_STRIDE
GL_NORMAL_ARRAY_TYPE
GL_NORMAL_ARRAY_STRIDE
GL_COLOR_ARRAY_SIZE
GL_COLOR_ARRAY_TYPE
GL_COLOR_ARRAY_STRIDE
GL_INDEX_ARRAY_TYPE
GL_INDEX_ARRAY_STRIDE
GL_TEXTURE_COORD_ARRAY_SIZE
GL_TEXTURE_COORD_ARRAY_TYPE
GL_TEXTURE_COORD_ARRAY_STRIDE
GL_EDGE_FLAG_ARRAY_STRIDE
GL_VERTEX_ARRAY_POINTER
GL_NORMAL_ARRAY_POINTER
GL_COLOR_ARRAY_POINTER
GL_INDEX_ARRAY_POINTER
GL_TEXTURE_COORD_ARRAY_POINTER
GL_EDGE_FLAG_ARRAY_POINTER
GL_V2F
GL_V3F
GL_C3F_V3F
GL_N3F_V3F
GL_C4F_N3F_V3F
GL_T2F_V3F
GL_T4F_V4F
GL_T2F_C3F_V3F
GL_T2F_N3F_V3F
GL_T2F_C4F_N3F_V3F
GL_T4F_C4F_N3F_V4F
GL_MATRIX_MODE
GL_MODELVIEW
GL_PROJECTION
GL_TEXTURE
GL_POINT_SMOOTH
GL_POINT_SIZE
GL_POINT_SIZE_GRANULARITY
GL_POINT_SIZE_RANGE
GL_LINE_SMOOTH
GL_LINE_STIPPLE
GL_LINE_STIPPLE_PATTERN
GL_LINE_STIPPLE_REPEAT
GL_LINE_WIDTH
GL_LINE_WIDTH_GRANULARITY
GL_LINE_WIDTH_RANGE
GL_POINT
GL_LINE
GL_FILL
GL_CW
GL_CCW
GL_FRONT
GL_BACK
GL_POLYGON_MODE
GL_POLYGON_SMOOTH
GL_POLYGON_STIPPLE
GL_EDGE_FLAG
GL_CULL_FACE
GL_CULL_FACE_MODE
GL_FRONT_FACE
GL_POLYGON_OFFSET_FACTOR
GL_POLYGON_OFFSET_UNITS
GL_POLYGON_OFFSET_POINT
GL_POLYGON_OFFSET_LINE
GL_POLYGON_OFFSET_FILL
GL_COMPILE
GL_COMPILE_AND_EXECUTE
GL_LIST_BASE
GL_LIST_INDEX
GL_LIST_MODE
GL_NEVER
GL_LESS
GL_EQUAL
GL_LEQUAL
GL_GREATER
GL_NOTEQUAL
GL_GEQUAL
GL_ALWAYS
GL_DEPTH_TEST
GL_DEPTH_BITS
GL_DEPTH_CLEAR_VALUE
GL_DEPTH_FUNC
GL_DEPTH_RANGE
GL_DEPTH_WRITEMASK
GL_DEPTH_COMPONENT
GL_LIGHTING
GL_LIGHT0
GL_LIGHT1
GL_LIGHT2
GL_LIGHT3
GL_LIGHT4
GL_LIGHT5
GL_LIGHT6
GL_LIGHT7
GL_SPOT_EXPONENT
GL_SPOT_CUTOFF
GL_CONSTANT_ATTENUATION
GL_LINEAR_ATTENUATION
GL_QUADRATIC_ATTENUATION
GL_AMBIENT
GL_DIFFUSE
GL_SPECULAR
GL_SHININESS
GL_EMISSION
GL_POSITION
GL_SPOT_DIRECTION
GL_AMBIENT_AND_DIFFUSE
GL_COLOR_INDEXES
GL_LIGHT_MODEL_TWO_SIDE
GL_LIGHT_MODEL_LOCAL_VIEWER
GL_LIGHT_MODEL_AMBIENT
GL_FRONT_AND_BACK
GL_SHADE_MODEL
GL_FLAT
GL_SMOOTH
GL_COLOR_MATERIAL
GL_COLOR_MATERIAL_FACE
GL_COLOR_MATERIAL_PARAMETER
GL_NORMALIZE
GL_CLIP_PLANE0
GL_CLIP_PLANE1
GL_CLIP_PLANE2
GL_CLIP_PLANE3
GL_CLIP_PLANE4
GL_CLIP_PLANE5
GL_ACCUM_RED_BITS
GL_ACCUM_GREEN_BITS
GL_ACCUM_BLUE_BITS
GL_ACCUM_ALPHA_BITS
GL_ACCUM_CLEAR_VALUE
GL_ACCUM
GL_ADD
GL_LOAD
GL_MULT
GL_RETURN
GL_ALPHA_TEST
GL_ALPHA_TEST_REF
GL_ALPHA_TEST_FUNC
GL_BLEND
GL_BLEND_SRC
GL_BLEND_DST
GL_ZERO
GL_ONE
GL_SRC_COLOR
GL_ONE_MINUS_SRC_COLOR
GL_SRC_ALPHA
GL_ONE_MINUS_SRC_ALPHA
GL_DST_ALPHA
GL_ONE_MINUS_DST_ALPHA
GL_DST_COLOR
GL_ONE_MINUS_DST_COLOR
GL_SRC_ALPHA_SATURATE
GL_FEEDBACK
GL_RENDER
GL_SELECT
GL_2D
GL_3D
GL_3D_COLOR
GL_3D_COLOR_TEXTURE
GL_4D_COLOR_TEXTURE
GL_POINT_TOKEN
GL_LINE_TOKEN
GL_LINE_RESET_TOKEN
GL_POLYGON_TOKEN
GL_BITMAP_TOKEN
GL_DRAW_PIXEL_TOKEN
GL_COPY_PIXEL_TOKEN
GL_PASS_THROUGH_TOKEN
GL_FEEDBACK_BUFFER_POINTER
GL_FEEDBACK_BUFFER_SIZE
GL_FEEDBACK_BUFFER_TYPE
GL_SELECTION_BUFFER_POINTER
GL_SELECTION_BUFFER_SIZE
GL_FOG
GL_FOG_MODE
GL_FOG_DENSITY
GL_FOG_COLOR
GL_FOG_INDEX
GL_FOG_START
GL_FOG_END
GL_LINEAR
GL_EXP
GL_EXP2
GL_LOGIC_OP
GL_INDEX_LOGIC_OP
GL_COLOR_LOGIC_OP
GL_LOGIC_OP_MODE
GL_CLEAR
GL_SET
GL_COPY
GL_COPY_INVERTED
GL_NOOP
GL_INVERT
GL_AND
GL_NAND
GL_OR
GL_NOR
GL_XOR
GL_EQUIV
GL_AND_REVERSE
GL_AND_INVERTED
GL_OR_REVERSE
GL_OR_INVERTED
GL_STENCIL_TEST
GL_STENCIL_WRITEMASK
GL_STENCIL_BITS
GL_STENCIL_FUNC
GL_STENCIL_VALUE_MASK
GL_STENCIL_REF
GL_STENCIL_FAIL
GL_STENCIL_PASS_DEPTH_PASS
GL_STENCIL_PASS_DEPTH_FAIL
GL_STENCIL_CLEAR_VALUE
GL_STENCIL_INDEX
GL_KEEP
GL_REPLACE
GL_INCR
GL_DECR
GL_NONE
GL_LEFT
GL_RIGHT
GL_FRONT_LEFT
GL_FRONT_RIGHT
GL_BACK_LEFT
GL_BACK_RIGHT
GL_AUX0
GL_AUX1
GL_AUX2
GL_AUX3
GL_COLOR_INDEX
GL_RED
GL_GREEN
GL_BLUE
GL_ALPHA
GL_LUMINANCE
GL_LUMINANCE_ALPHA
GL_ALPHA_BITS
GL_RED_BITS
GL_GREEN_BITS
GL_BLUE_BITS
GL_INDEX_BITS
GL_SUBPIXEL_BITS
GL_AUX_BUFFERS
GL_READ_BUFFER
GL_DRAW_BUFFER
GL_DOUBLEBUFFER
GL_STEREO
GL_BITMAP
GL_COLOR
GL_DEPTH
GL_STENCIL
GL_DITHER
GL_RGB
GL_RGBA
GL_MAX_LIST_NESTING
GL_MAX_ATTRIB_STACK_DEPTH
GL_MAX_MODELVIEW_STACK_DEPTH
GL_MAX_NAME_STACK_DEPTH
GL_MAX_PROJECTION_STACK_DEPTH
GL_MAX_TEXTURE_STACK_DEPTH
GL_MAX_EVAL_ORDER
GL_MAX_LIGHTS
GL_MAX_CLIP_PLANES
GL_MAX_TEXTURE_SIZE
GL_MAX_PIXEL_MAP_TABLE
GL_MAX_VIEWPORT_DIMS
GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
GL_ATTRIB_STACK_DEPTH
GL_CLIENT_ATTRIB_STACK_DEPTH
GL_COLOR_CLEAR_VALUE
GL_COLOR_WRITEMASK
GL_CURRENT_INDEX
GL_CURRENT_COLOR
GL_CURRENT_NORMAL
GL_CURRENT_RASTER_COLOR
GL_CURRENT_RASTER_DISTANCE
GL_CURRENT_RASTER_INDEX
GL_CURRENT_RASTER_POSITION
GL_CURRENT_RASTER_TEXTURE_COORDS
GL_CURRENT_RASTER_POSITION_VALID
GL_CURRENT_TEXTURE_COORDS
GL_INDEX_CLEAR_VALUE
GL_INDEX_MODE
GL_INDEX_WRITEMASK
GL_MODELVIEW_MATRIX
GL_MODELVIEW_STACK_DEPTH
GL_NAME_STACK_DEPTH
GL_PROJECTION_MATRIX
GL_PROJECTION_STACK_DEPTH
GL_RENDER_MODE
GL_RGBA_MODE
GL_TEXTURE_MATRIX
GL_TEXTURE_STACK_DEPTH
GL_VIEWPORT
GL_AUTO_NORMAL
GL_MAP1_COLOR_4
GL_MAP1_GRID_DOMAIN
GL_MAP1_GRID_SEGMENTS
GL_MAP1_INDEX
GL_MAP1_NORMAL
GL_MAP1_TEXTURE_COORD_1
GL_MAP1_TEXTURE_COORD_2
GL_MAP1_TEXTURE_COORD_3
GL_MAP1_TEXTURE_COORD_4
GL_MAP1_VERTEX_3
GL_MAP1_VERTEX_4
GL_MAP2_COLOR_4
GL_MAP2_GRID_DOMAIN
GL_MAP2_GRID_SEGMENTS
GL_MAP2_INDEX
GL_MAP2_NORMAL
GL_MAP2_TEXTURE_COORD_1
GL_MAP2_TEXTURE_COORD_2
GL_MAP2_TEXTURE_COORD_3
GL_MAP2_TEXTURE_COORD_4
GL_MAP2_VERTEX_3
GL_MAP2_VERTEX_4
GL_COEFF
GL_DOMAIN
GL_ORDER
GL_FOG_HINT
GL_LINE_SMOOTH_HINT
GL_PERSPECTIVE_CORRECTION_HINT
GL_POINT_SMOOTH_HINT
GL_POLYGON_SMOOTH_HINT
GL_DONT_CARE
GL_FASTEST
GL_NICEST
GL_SCISSOR_TEST
GL_SCISSOR_BOX
GL_MAP_COLOR
GL_MAP_STENCIL
GL_INDEX_SHIFT
GL_INDEX_OFFSET
GL_RED_SCALE
GL_RED_BIAS
GL_GREEN_SCALE
GL_GREEN_BIAS
GL_BLUE_SCALE
GL_BLUE_BIAS
GL_ALPHA_SCALE
GL_ALPHA_BIAS
GL_DEPTH_SCALE
GL_DEPTH_BIAS
GL_PIXEL_MAP_S_TO_S_SIZE
GL_PIXEL_MAP_I_TO_I_SIZE
GL_PIXEL_MAP_I_TO_R_SIZE
GL_PIXEL_MAP_I_TO_G_SIZE
GL_PIXEL_MAP_I_TO_B_SIZE
GL_PIXEL_MAP_I_TO_A_SIZE
GL_PIXEL_MAP_R_TO_R_SIZE
GL_PIXEL_MAP_G_TO_G_SIZE
GL_PIXEL_MAP_B_TO_B_SIZE
GL_PIXEL_MAP_A_TO_A_SIZE
GL_PIXEL_MAP_S_TO_S
GL_PIXEL_MAP_I_TO_I
GL_PIXEL_MAP_I_TO_R
GL_PIXEL_MAP_I_TO_G
GL_PIXEL_MAP_I_TO_B
GL_PIXEL_MAP_I_TO_A
GL_PIXEL_MAP_R_TO_R
GL_PIXEL_MAP_G_TO_G
GL_PIXEL_MAP_B_TO_B
GL_PIXEL_MAP_A_TO_A
GL_PACK_ALIGNMENT
GL_PACK_LSB_FIRST
GL_PACK_ROW_LENGTH
GL_PACK_SKIP_PIXELS
GL_PACK_SKIP_ROWS
GL_PACK_SWAP_BYTES
GL_UNPACK_ALIGNMENT
GL_UNPACK_LSB_FIRST
GL_UNPACK_ROW_LENGTH
GL_UNPACK_SKIP_PIXELS
GL_UNPACK_SKIP_ROWS
GL_UNPACK_SWAP_BYTES
GL_ZOOM_X
GL_ZOOM_Y
GL_TEXTURE_ENV
GL_TEXTURE_ENV_MODE
GL_TEXTURE_1D
GL_TEXTURE_2D
GL_TEXTURE_WRAP_S
GL_TEXTURE_WRAP_T
GL_TEXTURE_MAG_FILTER
GL_TEXTURE_MIN_FILTER
GL_TEXTURE_ENV_COLOR
GL_TEXTURE_GEN_S
GL_TEXTURE_GEN_T
GL_TEXTURE_GEN_MODE
GL_TEXTURE_BORDER_COLOR
GL_TEXTURE_WIDTH
GL_TEXTURE_HEIGHT
GL_TEXTURE_BORDER
GL_TEXTURE_COMPONENTS
GL_TEXTURE_RED_SIZE
GL_TEXTURE_GREEN_SIZE
GL_TEXTURE_BLUE_SIZE
GL_TEXTURE_ALPHA_SIZE
GL_TEXTURE_LUMINANCE_SIZE
GL_TEXTURE_INTENSITY_SIZE
GL_NEAREST_MIPMAP_NEAREST
GL_NEAREST_MIPMAP_LINEAR
GL_LINEAR_MIPMAP_NEAREST
GL_LINEAR_MIPMAP_LINEAR
GL_OBJECT_LINEAR
GL_OBJECT_PLANE
GL_EYE_LINEAR
GL_EYE_PLANE
GL_SPHERE_MAP
GL_DECAL
GL_MODULATE
GL_NEAREST
GL_REPEAT
GL_CLAMP
GL_S
GL_T
GL_R
GL_Q
GL_TEXTURE_GEN_R
GL_TEXTURE_GEN_Q
GL_VENDOR
GL_RENDERER
GL_VERSION
GL_EXTENSIONS
GL_NO_ERROR
GL_INVALID_VALUE
GL_INVALID_ENUM
GL_INVALID_OPERATION
GL_STACK_OVERFLOW
GL_STACK_UNDERFLOW
GL_OUT_OF_MEMORY
GL_CURRENT_BIT
GL_POINT_BIT
GL_LINE_BIT
GL_POLYGON_BIT
GL_POLYGON_STIPPLE_BIT
GL_PIXEL_MODE_BIT
GL_LIGHTING_BIT
GL_FOG_BIT
GL_DEPTH_BUFFER_BIT
GL_ACCUM_BUFFER_BIT
GL_STENCIL_BUFFER_BIT
GL_VIEWPORT_BIT
GL_TRANSFORM_BIT
GL_ENABLE_BIT
GL_COLOR_BUFFER_BIT
GL_HINT_BIT
GL_EVAL_BIT
GL_LIST_BIT
GL_TEXTURE_BIT
GL_SCISSOR_BIT
GL_ALL_ATTRIB_BITS
GL_PROXY_TEXTURE_1D
GL_PROXY_TEXTURE_2D
GL_TEXTURE_PRIORITY
GL_TEXTURE_RESIDENT
GL_TEXTURE_BINDING_1D
GL_TEXTURE_BINDING_2D
GL_TEXTURE_INTERNAL_FORMAT
GL_ALPHA4
GL_ALPHA8
GL_ALPHA12
GL_ALPHA16
GL_LUMINANCE4
GL_LUMINANCE8
GL_LUMINANCE12
GL_LUMINANCE16
GL_LUMINANCE4_ALPHA4
GL_LUMINANCE6_ALPHA2
GL_LUMINANCE8_ALPHA8
GL_LUMINANCE12_ALPHA4
GL_LUMINANCE12_ALPHA12
GL_LUMINANCE16_ALPHA16
GL_INTENSITY
GL_INTENSITY4
GL_INTENSITY8
GL_INTENSITY12
GL_INTENSITY16
GL_R3_G3_B2
GL_RGB4
GL_RGB5
GL_RGB8
GL_RGB10
GL_RGB12
GL_RGB16
GL_RGBA2
GL_RGBA4
GL_RGB5_A1
GL_RGBA8
GL_RGB10_A2
GL_RGBA12
GL_RGBA16
GL_CLIENT_PIXEL_STORE_BIT
GL_CLIENT_VERTEX_ARRAY_BIT
GL_CLIENT_ALL_ATTRIB_BITS</pre>
<p><a name="Functions(GL_1.1)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><u>glAccum</u>(<i>op, value</i>)</div>
<div class="func"><u>glAlphaFunc</u>(<i>func, ref</i>)</div>
<div class="func"><i>residences</i> = <u>glAreTexturesResident</u>(<i>n, textures</i>)</div>
<div class="func"><u>glArrayElement</u>(<i>i</i>)</div>
<div class="func"><u>glBegin</u>(<i>mode</i>)</div>
<div class="func"><u>glBindTexture</u>(<i>target, texture</i>)</div>
<div class="func"><u>glBitmap</u>(<i>width, height, xorig, yorig, xmove, ymove, bitmap</i>)</div>
<div class="func"><u>glBlendFunc</u>(<i>sfactor, dfactor</i>)</div>
<div class="func"><u>glCallList</u>(<i>list</i>)</div>
<div class="func"><u>glCallLists</u>(<i>n, lists</i>)</div>
<div class="func"><u>glClear</u>(<i>mask</i>)</div>
<div class="func"><u>glClearAccum</u>(<i>red, green, blue, alpha</i>)</div>
<div class="func"><u>glClearColor</u>(<i>red, green, blue, alpha</i>)</div>
<div class="func"><u>glClearDepth</u>(<i>depth</i>)</div>
<div class="func"><u>glClearIndex</u>(<i>c</i>)</div>
<div class="func"><u>glClearStencil</u>(<i>s</i>)</div>
<div class="func"><u>glClipPlane</u>(<i>plane, equation</i>)</div>
<div class="func"><u>glColor</u>(<i>red, green, blue[, alpha]</i>)</div>
<div class="func"><u>glColorMask</u>(<i>red, green, blue, alpha</i>)</div>
<div class="func"><u>glColorMaterial</u>(<i>face, mode</i>)</div>
<div class="func"><u>glColorPointer</u>(<i>size, stride, pointer</i>)</div>
<div class="func"><u>glCopyPixels</u>(<i>x, y, width, height, type</i>)</div>
<div class="func"><u>glCopyTexImage1D</u>(<i>target, level, internalformat, x, y, width, border</i>)</div>
<div class="func"><u>glCopyTexImage2D</u>(<i>target, level, internalformat, x, y, width, height, border</i>)</div>
<div class="func"><u>glCopyTexSubImage1D</u>(<i>target, level, xoffset, x, y, width</i>)</div>
<div class="func"><u>glCopyTexSubImage2D</u>(<i>target, level, xoffset, yoffset, x, y, width, height</i>)</div>
<div class="func"><u>glCullFace</u>(<i>mode</i>)</div>
<div class="func"><u>glDeleteLists</u>(<i>list, range</i>)</div>
<div class="func"><u>glDeleteTextures</u>(<i>n, textures</i>)</div>
<div class="func"><u>glDepthFunc</u>(<i>func</i>)</div>
<div class="func"><u>glDepthMask</u>(<i>flag</i>)</div>
<div class="func"><u>glDepthRange</u>(<i>nearVal, farVal</i>)</div>
<div class="func"><u>glDisable</u>(<i>cap</i>)</div>
<div class="func"><u>glDisableClientState</u>(<i>cap</i>)</div>
<div class="func"><u>glDrawArrays</u>(<i>mode, first, count</i>)</div>
<div class="func"><u>glDrawBuffer</u>(<i>mode</i>)</div>
<div class="func"><u>glDrawElements</u>(<i>mode, count, indices</i>)</div>
<div class="func"><u>glDrawPixels</u>(<i>width, height, format, pixels</i>)</div>
<div class="func"><u>glEdgeFlag</u>(<i>flag</i>)</div>
<div class="func"><u>glEdgeFlagPointer</u>(<i>stride, pointer</i>)</div>
<div class="func"><u>glEnable</u>(<i>cap</i>)</div>
<div class="func"><u>glEnableClientState</u>(<i>cap</i>)</div>
<div class="func"><u>glEnd</u>()</div>
<div class="func"><u>glEndList</u>()</div>
<div class="func"><u>glEvalCoord</u>(<i>u[, v]</i>)</div>
<div class="func"><u>glEvalMesh</u>(<i>mode, i1, i2[, j1, j2]</i>)</div>
<div class="func"><u>glEvalPoint</u>(<i>i[, j]</i>)</div>
<div class="func"><i>[bufferdata]</i> = <u>glFeedbackBuffer</u>(<i>mode, buffer[, size, type]</i>)</div>
<i>mode</i> can be GL_SET or GL_LOAD. <i>buffer</i> is an internal buffer with index 0-2.<br>
If <i>mode</i> is GL_SET, all 4 arguments are required to reserve the internal buffer.<br>
If <i>mode</i> is GL_LOAD, just <i>buffer</i> is required and the buffer data will be returned.
<div class="func"><u>glFog</u>(<i>pname, param/s</i>)</div>
<div class="func"><u>glFrontFace</u>(<i>mode</i>)</div>
<div class="func"><u>glFrustum</u>(<i>left, right, bottom, top, nearVal, farVal</i>)</div>
<div class="func"><i>listbase</i> = <u>glGenLists</u>(<i>range</i>)</div>
<div class="func"><i>textures</i> = <u>glGenTextures</u>(<i>n</i>)</div>
<div class="func"><i>params</i> = <u>glGetBoolean</u>(<i>pname, n</i>)</div>
<div class="func"><i>equation</i> = <u>glGetClipPlane</u>(<i>plane</i>)</div>
<div class="func"><i>params</i> = <u>glGetNumber</u>(<i>pname, n</i>)</div>
<div class="func"><i>err</i> = <u>glGetError</u>()</div>
<div class="func"><i>params</i> = <u>glGetLight</u>(<i>light, pname, n</i>)</div>
<div class="func"><i>v</i> = <u>glGetMap</u>(<i>target, query, n</i>)</div>
<div class="func"><i>params</i> = <u>glGetMaterial</u>(<i>face, pname, n</i>)</div>
<div class="func"><i>data</i> = <u>glGetPixelMap</u>(<i>map, n</i>)</div>
<div class="func"><i>pattern</i> = <u>glGetPolygonStipple</u>()</div>
<div class="func"><i>str</i> = <u>glGetString</u>(<i>name</i>)</div>
<div class="func"><i>params</i> = <u>glGetTexEnv</u>(<i>target, pname, n</i>)</div>
<div class="func"><i>params</i> = <u>glGetTexGen</u>(<i>coord, pname, n</i>)</div>
<div class="func"><i>img</i> = <u>glGetTexImage</u>(<i>target, level, format, size</i>)</div>
<div class="func"><i>params</i> = <u>glGetTexLevelParameter</u>(<i>target, level, pname, n</i>)</div>
<div class="func"><i>params</i> = <u>glGetTexParameter</u>(<i>target, pname, n</i>)</div>
<div class="func"><u>glHint</u>(<i>target, mode</i>)</div>
<div class="func"><u>glIndexMask</u>(<i>mask</i>)</div>
<div class="func"><u>glIndexPointer</u>(<i>stride, pointer</i>)</div>
<div class="func"><u>glIndex</u>(<i>c</i>)</div>
<div class="func"><u>glInitNames</u>()</div>
<div class="func"><u>glInterleavedArrays</u>(<i>format, stride, pointer</i>)</div>
<div class="func"><i>hit</i> = <u>glIsEnabled</u>(<i>cap</i>)</div>
<div class="func"><i>hit</i> = <u>glIsList</u>(<i>list</i>)</div>
<div class="func"><i>hit</i> = <u>glIsTexture</u>(<i>texture</i>)</div>
<div class="func"><u>glLightModel</u>(<i>pname, param/s</i>)</div>
<div class="func"><u>glLight</u>(<i>light, pname, param/s</i>)</div>
<div class="func"><u>glLineStipple</u>(<i>factor, pattern</i>)</div>
<div class="func"><u>glLineWidth</u>(<i>width</i>)</div>
<div class="func"><u>glListBase</u>(<i>base</i>)</div>
<div class="func"><u>glLoadIdentity</u>()</div>
<div class="func"><u>glLoadMatrix</u>(<i>m</i>)</div>
<div class="func"><u>glLoadName</u>(<i>name</i>)</div>
<div class="func"><u>glLogicOp</u>(<i>opcode</i>)</div>
<div class="func"><u>glMap</u>(<i>target, u1, u2, stride, order, points</i>)<br>
&nbsp;<u>glMap</u>(<i>target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points</i>)</div>
<div class="func"><u>glMapGrid</u>(<i>un, u1, u2[, vn, v1, v2]</i>)</div>
<div class="func"><u>glMaterial</u>(<i>face, pname, param/s</i>)</div>
<div class="func"><u>glMatrixMode</u>(<i>mode</i>)</div>
<div class="func"><u>glMultMatrix</u>(<i>m</i>)</div>
<div class="func"><u>glNewList</u>(<i>list, mode</i>)</div>
<div class="func"><u>glNormal</u>(<i>nx, ny, nz</i>)</div>
<div class="func"><u>glNormalPointer</u>(<i>stride, pointer</i>)</div>
<div class="func"><u>glOrtho</u>(<i>left, right, bottom, top, nearVal, farVal</i>)</div>
<div class="func"><u>glPassThrough</u>(<i>token</i>)</div>
<div class="func"><u>glPixelMap</u>(<i>map, mapsize, values</i>)</div>
<div class="func"><u>glPixelStore</u>(<i>pname, param</i>)</div>
<div class="func"><u>glPixelTransfer</u>(<i>pname, param</i>)</div>
<div class="func"><u>glPixelZoom</u>(<i>xfactor, yfactor</i>)</div>
<div class="func"><u>glPointSize</u>(<i>size</i>)</div>
<div class="func"><u>glPolygonMode</u>(<i>face, mode</i>)</div>
<div class="func"><u>glPolygonOffset</u>(<i>factor, units</i>)</div>
<div class="func"><u>glPolygonStipple</u>(<i>pattern</i>)</div>
<div class="func"><u>glPopAttrib</u>()</div>
<div class="func"><u>glPopClientAttrib</u>(<i></i>)</div>
<div class="func"><u>glPopMatrix</u>()</div>
<div class="func"><u>glPopName</u>()</div>
<div class="func"><u>glPrioritizeTextures</u>(<i>n, textures, priorities</i>)</div>
<div class="func"><u>glPushAttrib</u>(<i>mask</i>)</div>
<div class="func"><u>glPushClientAttrib</u>(<i>mask</i>)</div>
<div class="func"><u>glPushMatrix</u>()</div>
<div class="func"><u>glPushName</u>(<i>name</i>)</div>
<div class="func"><u>glRasterPos</u>(<i>x, y[, z[, w]]</i>)</div>
<div class="func"><u>glReadBuffer</u>(<i>mode</i>)</div>
<div class="func"><i>data</i> = <u>glReadPixels</u>(<i>x, y, width, height, format</i>)</div>
<div class="func"><u>glRect</u>(<i>x1, y1, x2, y2</i>)</div>
<div class="func"><u>glRenderMode</u>(<i>mode</i>)</div>
<div class="func"><u>glRotate</u>(<i>angle, x, y, z</i>)</div>
<div class="func"><u>glScale</u>(<i>x, y, z</i>)</div>
<div class="func"><u>glScissor</u>(<i>x, y, width, height</i>)</div>
<div class="func"><i>[bufferdata]</i> = <u>glSelectBuffer</u>(<i>mode[, size]</i>)</div>
<i>mode</i> can be GL_SET or GL_LOAD.<br>
If <i>mode</i> is GL_SET, <i>size</i> is required to reserve the internal buffer.<br>
If <i>mode</i> is GL_LOAD, <i>size</i> isn't required and the buffer data will be returned. 
<div class="func"><u>glShadeModel</u>(<i>mode</i>)</div>
<div class="func"><u>glStencilFunc</u>(<i>func, ref, mask</i>)</div>
<div class="func"><u>glStencilMask</u>(<i>mask</i>)</div>
<div class="func"><u>glStencilOp</u>(<i>sfail, dpfail, dppass</i>)</div>
<div class="func"><u>glTexCoord</u>(<i>s[, t[, r[, q]]]</i>)</div>
<div class="func"><u>glTexCoordPointer</u>(<i>size, stride, pointer</i>)</div>
<div class="func"><u>glTexEnv</u>(<i>target, pname, param/s</i>)</div>
<div class="func"><u>glTexGen</u>(<i>coord, pname, param/s</i>)</div>
<div class="func"><u>glTexImage1D</u>(<i>target, level, internalFormat, width, border, format, data</i>)</div>
<div class="func"><u>glTexImage2D</u>(<i>target, level, internalFormat, width, height, border, format, data</i>)</div>
<div class="func"><u>glTexParameter</u>(<i>target, pname, param/s</i>)</div>
<div class="func"><u>glTexSubImage1D</u>(<i>target, level, xoffset, width, format, data</i>)</div>
<div class="func"><u>glTexSubImage2D</u>(<i>target, level, xoffset, yoffset, width, height, format, data</i>)</div>
<div class="func"><u>glTranslate</u>(<i>x, y, z</i>)</div>
<div class="func"><u>glVertex</u>(<i>x, y[, z[, w]]</i>)</div>
<div class="func"><u>glVertexPointer</u>(<i>size, stride, pointer</i>)</div>
<div class="func"><u>glViewport</u>(<i>x, y, width, height</i>)</div>
<a name="GL_1.2" /><h4><a href="#Top">GL 1.2</a></h4>
<p><a name="Attributes(GL_1.2)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>GL_VERSION_1_2
GL_SMOOTH_POINT_SIZE_RANGE
GL_SMOOTH_POINT_SIZE_GRANULARITY
GL_SMOOTH_LINE_WIDTH_RANGE
GL_SMOOTH_LINE_WIDTH_GRANULARITY
GL_RESCALE_NORMAL
GL_TEXTURE_BINDING_3D
GL_PACK_SKIP_IMAGES
GL_PACK_IMAGE_HEIGHT
GL_UNPACK_SKIP_IMAGES
GL_UNPACK_IMAGE_HEIGHT
GL_TEXTURE_3D
GL_PROXY_TEXTURE_3D
GL_TEXTURE_DEPTH
GL_TEXTURE_WRAP_R
GL_MAX_3D_TEXTURE_SIZE
GL_BGR
GL_BGRA
GL_MAX_ELEMENTS_VERTICES
GL_MAX_ELEMENTS_INDICES
GL_CLAMP_TO_EDGE
GL_TEXTURE_MIN_LOD
GL_TEXTURE_MAX_LOD
GL_TEXTURE_BASE_LEVEL
GL_TEXTURE_MAX_LEVEL
GL_LIGHT_MODEL_COLOR_CONTROL
GL_SINGLE_COLOR
GL_SEPARATE_SPECULAR_COLOR
GL_ALIASED_POINT_SIZE_RANGE
GL_ALIASED_LINE_WIDTH_RANGE</pre>
<p><a name="Functions(GL_1.2)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><u>glCopyTexSubImage3D</u>(<i>target, level, xoffset, yoffset, zoffset, x, y, width, height</i>)</div>
<div class="func"><u>glDrawRangeElements</u>(<i>mode, start, end, count, indices</i>)</div>
<div class="func"><u>glTexImage3D</u>(<i>target, level, internalFormat, width, height, depth, border, format, data</i>)</div>
<div class="func"><u>glTexSubImage3D</u>(<i>target, level, xoffset, yoffset, zoffset, width, height, depth, format, data</i>)</div>
<a name="GL_1.3" /><h4><a href="#Top">GL 1.3</a></h4>
<p><a name="Attributes(GL_1.3)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>GL_VERSION_1_3
GL_MULTISAMPLE
GL_SAMPLE_ALPHA_TO_COVERAGE
GL_SAMPLE_ALPHA_TO_ONE
GL_SAMPLE_COVERAGE
GL_SAMPLE_BUFFERS
GL_SAMPLES
GL_SAMPLE_COVERAGE_VALUE
GL_SAMPLE_COVERAGE_INVERT
GL_CLAMP_TO_BORDER
GL_TEXTURE0
GL_TEXTURE1
GL_TEXTURE2
GL_TEXTURE3
GL_TEXTURE4
GL_TEXTURE5
GL_TEXTURE6
GL_TEXTURE7
GL_TEXTURE8
GL_TEXTURE9
GL_TEXTURE10
GL_TEXTURE11
GL_TEXTURE12
GL_TEXTURE13
GL_TEXTURE14
GL_TEXTURE15
GL_TEXTURE16
GL_TEXTURE17
GL_TEXTURE18
GL_TEXTURE19
GL_TEXTURE20
GL_TEXTURE21
GL_TEXTURE22
GL_TEXTURE23
GL_TEXTURE24
GL_TEXTURE25
GL_TEXTURE26
GL_TEXTURE27
GL_TEXTURE28
GL_TEXTURE29
GL_TEXTURE30
GL_TEXTURE31
GL_ACTIVE_TEXTURE
GL_CLIENT_ACTIVE_TEXTURE
GL_MAX_TEXTURE_UNITS
GL_TRANSPOSE_MODELVIEW_MATRIX
GL_TRANSPOSE_PROJECTION_MATRIX
GL_TRANSPOSE_TEXTURE_MATRIX
GL_TRANSPOSE_COLOR_MATRIX
GL_SUBTRACT
GL_COMPRESSED_ALPHA
GL_COMPRESSED_LUMINANCE
GL_COMPRESSED_LUMINANCE_ALPHA
GL_COMPRESSED_INTENSITY
GL_COMPRESSED_RGB
GL_COMPRESSED_RGBA
GL_TEXTURE_COMPRESSION_HINT
GL_NORMAL_MAP
GL_REFLECTION_MAP
GL_TEXTURE_CUBE_MAP
GL_TEXTURE_BINDING_CUBE_MAP
GL_TEXTURE_CUBE_MAP_POSITIVE_X
GL_TEXTURE_CUBE_MAP_NEGATIVE_X
GL_TEXTURE_CUBE_MAP_POSITIVE_Y
GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
GL_TEXTURE_CUBE_MAP_POSITIVE_Z
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
GL_PROXY_TEXTURE_CUBE_MAP
GL_MAX_CUBE_MAP_TEXTURE_SIZE
GL_COMBINE
GL_COMBINE_RGB
GL_COMBINE_ALPHA
GL_RGB_SCALE
GL_ADD_SIGNED
GL_INTERPOLATE
GL_CONSTANT
GL_PRIMARY_COLOR
GL_PREVIOUS
GL_SOURCE0_RGB
GL_SOURCE1_RGB
GL_SOURCE2_RGB
GL_SOURCE0_ALPHA
GL_SOURCE1_ALPHA
GL_SOURCE2_ALPHA
GL_OPERAND0_RGB
GL_OPERAND1_RGB
GL_OPERAND2_RGB
GL_OPERAND0_ALPHA
GL_OPERAND1_ALPHA
GL_OPERAND2_ALPHA
GL_TEXTURE_COMPRESSED_IMAGE_SIZE
GL_TEXTURE_COMPRESSED
GL_NUM_COMPRESSED_TEXTURE_FORMATS
GL_COMPRESSED_TEXTURE_FORMATS
GL_DOT3_RGB
GL_DOT3_RGBA
GL_MULTISAMPLE_BIT</pre>
<p><a name="Functions(GL_1.3)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><u>glActiveTexture</u>(<i>texture</i>)</div>
<div class="func"><u>glClientActiveTexture</u>(<i>texture</i>)</div>
<div class="func"><u>glCompressedTexImage1D</u>(<i>target, level, internalFormat, width, border, imageSize, data</i>)</div>
<div class="func"><u>glCompressedTexImage2D</u>(<i>target, level, internalFormat, width, height, border, imageSize, data</i>)</div>
<div class="func"><u>glCompressedTexImage3D</u>(<i>target, level, internalFormat, width, height, depth, border, imageSize, data</i>)</div>
<div class="func"><u>glCompressedTexSubImage1D</u>(<i>target, level, xoffset, width, format, imageSize, data</i>)</div>
<div class="func"><u>glCompressedTexSubImage2D</u>(<i>target, level, xoffset, yoffset, width, height, format, imageSize, data</i>)</div>
<div class="func"><u>glCompressedTexSubImage3D</u>(<i>target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data</i>)</div>
<div class="func"><i>img</i> = <u>glGetCompressedTexImage</u>(<i>target, lod, size</i>)</div>
<div class="func"><u>glLoadTransposeMatrix</u>(<i>m</i>)</div>
<div class="func"><u>glMultTransposeMatrix</u>(<i>m</i>)</div>
<div class="func"><u>glMultiTexCoord</u>(<i>target, s[, t[, r[, q]]]</i>)</div>
<div class="func"><u>glSampleCoverage</u>(<i>value, invert</i>)</div>
<a name="GL_1.4" /><h4><a href="#Top">GL 1.4</a></h4>
<p><a name="Attributes(GL_1.4)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>GL_VERSION_1_4
GL_BLEND_DST_RGB
GL_BLEND_SRC_RGB
GL_BLEND_DST_ALPHA
GL_BLEND_SRC_ALPHA
GL_POINT_SIZE_MIN
GL_POINT_SIZE_MAX
GL_POINT_FADE_THRESHOLD_SIZE
GL_POINT_DISTANCE_ATTENUATION
GL_GENERATE_MIPMAP
GL_GENERATE_MIPMAP_HINT
GL_DEPTH_COMPONENT16
GL_DEPTH_COMPONENT24
GL_DEPTH_COMPONENT32
GL_MIRRORED_REPEAT
GL_FOG_COORDINATE_SOURCE
GL_FOG_COORDINATE
GL_FRAGMENT_DEPTH
GL_CURRENT_FOG_COORDINATE
GL_FOG_COORDINATE_ARRAY_TYPE
GL_FOG_COORDINATE_ARRAY_STRIDE
GL_FOG_COORDINATE_ARRAY_POINTER
GL_FOG_COORDINATE_ARRAY
GL_COLOR_SUM
GL_CURRENT_SECONDARY_COLOR
GL_SECONDARY_COLOR_ARRAY_SIZE
GL_SECONDARY_COLOR_ARRAY_TYPE
GL_SECONDARY_COLOR_ARRAY_STRIDE
GL_SECONDARY_COLOR_ARRAY_POINTER
GL_SECONDARY_COLOR_ARRAY
GL_MAX_TEXTURE_LOD_BIAS
GL_TEXTURE_FILTER_CONTROL
GL_TEXTURE_LOD_BIAS
GL_INCR_WRAP
GL_DECR_WRAP
GL_TEXTURE_DEPTH_SIZE
GL_DEPTH_TEXTURE_MODE
GL_TEXTURE_COMPARE_MODE
GL_TEXTURE_COMPARE_FUNC
GL_COMPARE_R_TO_TEXTURE</pre>
<p><a name="Functions(GL_1.4)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><u>glBlendColor</u>(<i>red, green, blue, alpha</i>)</div>
<div class="func"><u>glBlendEquation</u>(<i>mode</i>)</div>
<div class="func"><u>glBlendFuncSeparate</u>(<i>srcRGB, dstRGB, srcAlpha, dstAlpha</i>)</div>
<div class="func"><u>glFogCoordPointer</u>(<i>stride, pointer</i>)</div>
<div class="func"><u>glFogCoord</u>(<i>coord</i>)</div>
<div class="func"><u>glMultiDrawArrays</u>(<i>mode, first, count, primcount</i>)</div>
<div class="func"><u>glPointParameter</u>(<i>pname, param/s</i>)</div>
<div class="func"><u>glSecondaryColor</u>(<i>red, green, blue</i>)</div>
<div class="func"><u>glSecondaryColorPointer</u>(<i>pointer</i>)</div>
<div class="func"><u>glWindowPos</u>(<i>x, y[, z]</i>)</div>
<a name="GL_1.5" /><h4><a href="#Top">GL 1.5</a></h4>
<p><a name="Attributes(GL_1.5)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>GL_VERSION_1_5
GL_FOG_COORD_SRC
GL_FOG_COORD
GL_FOG_COORD_ARRAY
GL_SRC0_RGB
GL_FOG_COORD_ARRAY_POINTER
GL_FOG_COORD_ARRAY_TYPE
GL_SRC1_ALPHA
GL_CURRENT_FOG_COORD
GL_FOG_COORD_ARRAY_STRIDE
GL_SRC0_ALPHA
GL_SRC1_RGB
GL_FOG_COORD_ARRAY_BUFFER_BINDING
GL_SRC2_ALPHA
GL_SRC2_RGB
GL_BUFFER_SIZE
GL_BUFFER_USAGE
GL_QUERY_COUNTER_BITS
GL_CURRENT_QUERY
GL_QUERY_RESULT
GL_QUERY_RESULT_AVAILABLE
GL_ARRAY_BUFFER
GL_ELEMENT_ARRAY_BUFFER
GL_ARRAY_BUFFER_BINDING
GL_ELEMENT_ARRAY_BUFFER_BINDING
GL_VERTEX_ARRAY_BUFFER_BINDING
GL_NORMAL_ARRAY_BUFFER_BINDING
GL_COLOR_ARRAY_BUFFER_BINDING
GL_INDEX_ARRAY_BUFFER_BINDING
GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING
GL_EDGE_FLAG_ARRAY_BUFFER_BINDING
GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING
GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
GL_WEIGHT_ARRAY_BUFFER_BINDING
GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
GL_READ_ONLY
GL_WRITE_ONLY
GL_READ_WRITE
GL_BUFFER_ACCESS
GL_BUFFER_MAPPED
GL_BUFFER_MAP_POINTER
GL_STREAM_DRAW
GL_STREAM_READ
GL_STREAM_COPY
GL_STATIC_DRAW
GL_STATIC_READ
GL_STATIC_COPY
GL_DYNAMIC_DRAW
GL_DYNAMIC_READ
GL_DYNAMIC_COPY
GL_SAMPLES_PASSED</pre>
<p><a name="Functions(GL_1.5)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><u>glBeginQuery</u>(<i>target, id</i>)</div>
<div class="func"><u>glBindBuffer</u>(<i>target, buffer</i>)</div>
<div class="func"><u>glBufferData</u>(<i>target, size, data, usage</i>)</div>
<div class="func"><u>glBufferSubData</u>(<i>target, offset, size, data</i>)</div>
<div class="func"><u>glDeleteBuffers</u>(<i>n, buffers</i>)</div>
<div class="func"><u>glDeleteQueries</u>(<i>n, ids</i>)</div>
<div class="func"><u>glEndQuery</u>(<i>target</i>)</div>
<div class="func"><i>buffers</i> = <u>glGenBuffers</u>(<i>n</i>)</div>
<div class="func"><i>ids</i> = <u>glGenQueries</u>(<i>n</i>)</div>
<div class="func"><i>data</i> = <u>glGetBufferParameter</u>(<i>target, value, n</i>)</div>
<div class="func"><i>data</i> = <u>glGetBufferSubData</u>(<i>target, offset, size, n</i>)</div>
<div class="func"><i>params</i> = <u>glGetQueryObject</u>(<i>id, pname, n</i>)</div>
<div class="func"><i>params</i> = <u>glGetQuery</u>(<i>target, pname, n</i>)</div>
<div class="func"><i>hit</i> = <u>glIsBuffer</u>(<i>buffer</i>)</div>
<div class="func"><i>hit</i> = <u>glIsQuery</u>(<i>id</i>)</div>
<div class="func"><i>valid</i> = <u>glMapBuffer</u>(<i>target, access</i>)</div>
<div class="func"><i>valid</i> = <u>glUnmapBuffer</u>(<i>target</i>)</div>
<a name="GL_2.0" /><h4><a href="#Top">GL 2.0</a></h4>
<p><a name="Attributes(GL_2.0)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>GL_VERSION_2_0
GL_BLEND_EQUATION_RGB
GL_VERTEX_ATTRIB_ARRAY_ENABLED
GL_VERTEX_ATTRIB_ARRAY_SIZE
GL_VERTEX_ATTRIB_ARRAY_STRIDE
GL_VERTEX_ATTRIB_ARRAY_TYPE
GL_CURRENT_VERTEX_ATTRIB
GL_VERTEX_PROGRAM_POINT_SIZE
GL_VERTEX_PROGRAM_TWO_SIDE
GL_VERTEX_ATTRIB_ARRAY_POINTER
GL_STENCIL_BACK_FUNC
GL_STENCIL_BACK_FAIL
GL_STENCIL_BACK_PASS_DEPTH_FAIL
GL_STENCIL_BACK_PASS_DEPTH_PASS
GL_MAX_DRAW_BUFFERS
GL_DRAW_BUFFER0
GL_DRAW_BUFFER1
GL_DRAW_BUFFER2
GL_DRAW_BUFFER3
GL_DRAW_BUFFER4
GL_DRAW_BUFFER5
GL_DRAW_BUFFER6
GL_DRAW_BUFFER7
GL_DRAW_BUFFER8
GL_DRAW_BUFFER9
GL_DRAW_BUFFER10
GL_DRAW_BUFFER11
GL_DRAW_BUFFER12
GL_DRAW_BUFFER13
GL_DRAW_BUFFER14
GL_DRAW_BUFFER15
GL_BLEND_EQUATION_ALPHA
GL_POINT_SPRITE
GL_COORD_REPLACE
GL_MAX_VERTEX_ATTRIBS
GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
GL_MAX_TEXTURE_COORDS
GL_MAX_TEXTURE_IMAGE_UNITS
GL_FRAGMENT_SHADER
GL_VERTEX_SHADER
GL_MAX_FRAGMENT_UNIFORM_COMPONENTS
GL_MAX_VERTEX_UNIFORM_COMPONENTS
GL_MAX_VARYING_FLOATS
GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS
GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
GL_SHADER_TYPE
GL_FLOAT_VEC2
GL_FLOAT_VEC3
GL_FLOAT_VEC4
GL_INT_VEC2
GL_INT_VEC3
GL_INT_VEC4
GL_BOOL
GL_BOOL_VEC2
GL_BOOL_VEC3
GL_BOOL_VEC4
GL_FLOAT_MAT2
GL_FLOAT_MAT3
GL_FLOAT_MAT4
GL_SAMPLER_1D
GL_SAMPLER_2D
GL_SAMPLER_3D
GL_SAMPLER_CUBE
GL_SAMPLER_1D_SHADOW
GL_SAMPLER_2D_SHADOW
GL_DELETE_STATUS
GL_COMPILE_STATUS
GL_LINK_STATUS
GL_VALIDATE_STATUS
GL_INFO_LOG_LENGTH
GL_ATTACHED_SHADERS
GL_ACTIVE_UNIFORMS
GL_ACTIVE_UNIFORM_MAX_LENGTH
GL_SHADER_SOURCE_LENGTH
GL_ACTIVE_ATTRIBUTES
GL_ACTIVE_ATTRIBUTE_MAX_LENGTH
GL_FRAGMENT_SHADER_DERIVATIVE_HINT
GL_SHADING_LANGUAGE_VERSION
GL_CURRENT_PROGRAM
GL_POINT_SPRITE_COORD_ORIGIN
GL_LOWER_LEFT
GL_UPPER_LEFT
GL_STENCIL_BACK_REF
GL_STENCIL_BACK_VALUE_MASK
GL_STENCIL_BACK_WRITEMASK</pre>
<p><a name="Functions(GL_2.0)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><u>glAttachShader</u>(<i>program, shader</i>)</div>
<div class="func"><u>glBindAttribLocation</u>(<i>program, index, name</i>)</div>
<div class="func"><u>glBlendEquationSeparate</u>(<i>modeRGB, modeAlpha</i>)</div>
<div class="func"><u>glCompileShader</u>(<i>shader</i>)</div>
<div class="func"><i>program</i> = <u>glCreateProgram</u>()</div>
<div class="func"><i>shader</i> = <u>glCreateShader</u>(<i>shaderType</i>)</div>
<div class="func"><u>glDeleteProgram</u>(<i>program</i>)</div>
<div class="func"><u>glDeleteShader</u>(<i>shader</i>)</div>
<div class="func"><u>glDetachShader</u>(<i>program, shader</i>)</div>
<div class="func"><u>glDisableVertexAttribArray</u>(<i>index</i>)</div>
<div class="func"><u>glDrawBuffers</u>(<i>n, bufs</i>)</div>
<div class="func"><u>glEnableVertexAttribArray</u>(<i>index</i>)</div>
<div class="func"><i>length, size, type, name</i> = <u>glGetActiveAttrib</u>(<i>program, index, bufSize</i>)</div>
<div class="func"><i>length, size, type, name</i> = <u>glGetActiveUniform</u>(<i>program, index, bufSize</i>)</div>
<div class="func"><i>count, shaders</i> = <u>glGetAttachedShaders</u>(<i>program, maxCount</i>)</div>
<div class="func"><i>location</i> = <u>glGetAttribLocation</u>(<i>program, name</i>)</div>
<div class="func"><i>length, log</i> = <u>glGetProgramInfoLog</u>(<i>program, maxLength</i>)</div>
<div class="func"><i>params</i> = <u>glGetProgram</u>(<i>program, pname, n</i>)</div>
<div class="func"><i>length, log</i> = <u>glGetShaderInfoLog</u>(<i>shader, maxLength</i>)</div>
<div class="func"><i>length, source</i> = <u>glGetShaderSource</u>(<i>shader, bufSize</i>)</div>
<div class="func"><i>params</i> = <u>glGetShader</u>(<i>shader, pname, n</i>)</div>
<div class="func"><i>location</i> = <u>glGetUniformLocation</u>(<i>program, name</i>)</div>
<div class="func"><i>params</i> = <u>glGetUniform</u>(<i>program, location, n</i>)</div>
<div class="func"><i>params</i> = <u>glGetVertexAttrib</u>(<i>index, pname, n</i>)</div>
<div class="func"><i>hit</i> = <u>glIsProgram</u>(<i>program</i>)</div>
<div class="func"><i>hit</i> = <u>glIsShader</u>(<i>shader</i>)</div>
<div class="func"><u>glLinkProgram</u>(<i>program</i>)</div>
<div class="func"><u>glShaderSource</u>(<i>shader, string</i>)</div>
<div class="func"><u>glStencilFuncSeparate</u>(<i>face, func, ref, mask</i>)</div>
<div class="func"><u>glStencilMaskSeparate</u>(<i>face, mask</i>)</div>
<div class="func"><u>glStencilOpSeparate</u>(<i>face, sfail, dpfail, dppass</i>)</div>
<div class="func"><u>glUniform</u>(<i>location, v0[, v1[, v2[, v3]]]</i>)</div>
<div class="func"><u>glUniformMatrix2</u>(<i>location, count, transpose, value</i>)</div>
<div class="func"><u>glUniformMatrix3</u>(<i>location, count, transpose, value</i>)</div>
<div class="func"><u>glUniformMatrix4</u>(<i>location, count, transpose, value</i>)</div>
<div class="func"><u>glUseProgram</u>(<i>program</i>)</div>
<div class="func"><u>glValidateProgram</u>(<i>program</i>)</div>
<div class="func"><u>glVertexAttrib</u>(<i>index, v0[, v1[, v2[, v3]]]</i>)</div>
<div class="func"><u>glVertexAttribPointer</u>(<i>index, size, normalized, pointer</i>)</div>
<a name="GL_2.1" /><h4><a href="#Top">GL 2.1</a></h4>
<p><a name="Attributes(GL_2.1)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>GL_VERSION_2_1
GL_CURRENT_RASTER_SECONDARY_COLOR
GL_PIXEL_PACK_BUFFER
GL_PIXEL_UNPACK_BUFFER
GL_PIXEL_PACK_BUFFER_BINDING
GL_PIXEL_UNPACK_BUFFER_BINDING
GL_FLOAT_MAT2x3
GL_FLOAT_MAT2x4
GL_FLOAT_MAT3x2
GL_FLOAT_MAT3x4
GL_FLOAT_MAT4x2
GL_FLOAT_MAT4x3
GL_SRGB
GL_SRGB8
GL_SRGB_ALPHA
GL_SRGB8_ALPHA8
GL_SLUMINANCE_ALPHA
GL_SLUMINANCE8_ALPHA8
GL_SLUMINANCE
GL_SLUMINANCE8
GL_COMPRESSED_SRGB
GL_COMPRESSED_SRGB_ALPHA
GL_COMPRESSED_SLUMINANCE
GL_COMPRESSED_SLUMINANCE_ALPHA</pre>
<p><a name="Functions(GL_2.1)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><u>glUniformMatrix2x3</u>(<i>location, count, transpose, value</i>)</div>
<div class="func"><u>glUniformMatrix2x4</u>(<i>location, count, transpose, value</i>)</div>
<div class="func"><u>glUniformMatrix3x2</u>(<i>location, count, transpose, value</i>)</div>
<div class="func"><u>glUniformMatrix3x4</u>(<i>location, count, transpose, value</i>)</div>
<div class="func"><u>glUniformMatrix4x2</u>(<i>location, count, transpose, value</i>)</div>
<div class="func"><u>glUniformMatrix4x3</u>(<i>location, count, transpose, value</i>)</div>
<a name="Framebuffer" /><h4><a href="#Top">Framebuffer</a></h4>
<p><a name="Attributes(Framebuffer)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>GL_ARB_framebuffer_object
GL_INVALID_FRAMEBUFFER_OPERATION
GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE
GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
GL_FRAMEBUFFER_DEFAULT
GL_FRAMEBUFFER_UNDEFINED
GL_DEPTH_STENCIL_ATTACHMENT
GL_INDEX
GL_MAX_RENDERBUFFER_SIZE
GL_DEPTH_STENCIL
GL_UNSIGNED_INT_24_8
GL_DEPTH24_STENCIL8
GL_TEXTURE_STENCIL_SIZE
GL_UNSIGNED_NORMALIZED
GL_SRGB
GL_DRAW_FRAMEBUFFER_BINDING
GL_FRAMEBUFFER_BINDING
GL_RENDERBUFFER_BINDING
GL_READ_FRAMEBUFFER
GL_DRAW_FRAMEBUFFER
GL_READ_FRAMEBUFFER_BINDING
GL_RENDERBUFFER_SAMPLES
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
GL_FRAMEBUFFER_COMPLETE
GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER
GL_FRAMEBUFFER_UNSUPPORTED
GL_MAX_COLOR_ATTACHMENTS
GL_COLOR_ATTACHMENT0
GL_COLOR_ATTACHMENT1
GL_COLOR_ATTACHMENT2
GL_COLOR_ATTACHMENT3
GL_COLOR_ATTACHMENT4
GL_COLOR_ATTACHMENT5
GL_COLOR_ATTACHMENT6
GL_COLOR_ATTACHMENT7
GL_COLOR_ATTACHMENT8
GL_COLOR_ATTACHMENT9
GL_COLOR_ATTACHMENT10
GL_COLOR_ATTACHMENT11
GL_COLOR_ATTACHMENT12
GL_COLOR_ATTACHMENT13
GL_COLOR_ATTACHMENT14
GL_COLOR_ATTACHMENT15
GL_DEPTH_ATTACHMENT
GL_STENCIL_ATTACHMENT
GL_FRAMEBUFFER
GL_RENDERBUFFER
GL_RENDERBUFFER_WIDTH
GL_RENDERBUFFER_HEIGHT
GL_RENDERBUFFER_INTERNAL_FORMAT
GL_STENCIL_INDEX1
GL_STENCIL_INDEX4
GL_STENCIL_INDEX8
GL_STENCIL_INDEX16
GL_RENDERBUFFER_RED_SIZE
GL_RENDERBUFFER_GREEN_SIZE
GL_RENDERBUFFER_BLUE_SIZE
GL_RENDERBUFFER_ALPHA_SIZE
GL_RENDERBUFFER_DEPTH_SIZE
GL_RENDERBUFFER_STENCIL_SIZE
GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
GL_MAX_SAMPLES</pre>
<p><a name="Functions(Framebuffer)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><u>glBindFramebuffer</u>(<i>target, framebuffer</i>)</div>
<div class="func"><u>glBindRenderbuffer</u>(<i>target, renderbuffer</i>)</div>
<div class="func"><u>glBlitFramebuffer</u>(<i>srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter</i>)</div>
<div class="func"><i>status</i> = <u>glCheckFramebufferStatus</u>(<i>target</i>)</div>
<div class="func"><u>glDeleteFramebuffers</u>(<i>n, framebuffers</i>)</div>
<div class="func"><u>glDeleteRenderbuffers</u>(<i>n, renderbuffers</i>)</div>
<div class="func"><u>glFramebufferRenderbuffer</u>(<i>target, attachment, renderbuffertarget, renderbuffer</i>)</div>
<div class="func"><u>glFramebufferTexture1D</u>(<i>target, attachment, textarget, texture, level</i>)</div>
<div class="func"><u>glFramebufferTexture2D</u>(<i>target, attachment, textarget, texture, level</i>)</div>
<div class="func"><u>glFramebufferTexture3D</u>(<i>target, attachment, textarget, texture, level, layer</i>)</div>
<div class="func"><u>glFramebufferTextureLayer</u>(<i>target, attachment, texture, level, layer</i>)</div>
<div class="func"><i>ids</i> = <u>glGenFramebuffers</u>(<i>n</i>)</div>
<div class="func"><i>renderbuffers</i> = <u>glGenRenderbuffers</u>(<i>n</i>)</div>
<div class="func"><u>glGenerateMipmap</u>(<i>target</i>)</div>
<div class="func"><i>params</i> = <u>glGetFramebufferAttachmentParameter</u>(<i>target, attachment, pname</i>)</div>
<div class="func"><i>params</i> = <u>glGetRenderbufferParameter</u>(<i>target, pname</i>)</div>
<div class="func"><i>hit</i> = <u>glIsFramebuffer</u>(<i>framebuffer</i>)</div>
<div class="func"><i>hit</i> = <u>glIsRenderbuffer</u>(<i>renderbuffer</i>)</div>
<div class="func"><u>glRenderbufferStorage</u>(<i>target, internalFormat, width, height</i>)</div>
<div class="func"><u>glRenderbufferStorageMultisample</u>(<i>target, samples, internalFormat, width, height</i>)</div>
<a name="Imaging" /><h4><a href="#Top">Imaging</a></h4>
<p><a name="Attributes(Imaging)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>GL_ARB_imaging
GL_CONSTANT_COLOR
GL_ONE_MINUS_CONSTANT_COLOR
GL_CONSTANT_ALPHA
GL_ONE_MINUS_CONSTANT_ALPHA
GL_BLEND_COLOR
GL_FUNC_ADD
GL_MIN
GL_MAX
GL_BLEND_EQUATION
GL_FUNC_SUBTRACT
GL_FUNC_REVERSE_SUBTRACT
GL_CONVOLUTION_1D
GL_CONVOLUTION_2D
GL_SEPARABLE_2D
GL_CONVOLUTION_BORDER_MODE
GL_CONVOLUTION_FILTER_SCALE
GL_CONVOLUTION_FILTER_BIAS
GL_REDUCE
GL_CONVOLUTION_FORMAT
GL_CONVOLUTION_WIDTH
GL_CONVOLUTION_HEIGHT
GL_MAX_CONVOLUTION_WIDTH
GL_MAX_CONVOLUTION_HEIGHT
GL_POST_CONVOLUTION_RED_SCALE
GL_POST_CONVOLUTION_GREEN_SCALE
GL_POST_CONVOLUTION_BLUE_SCALE
GL_POST_CONVOLUTION_ALPHA_SCALE
GL_POST_CONVOLUTION_RED_BIAS
GL_POST_CONVOLUTION_GREEN_BIAS
GL_POST_CONVOLUTION_BLUE_BIAS
GL_POST_CONVOLUTION_ALPHA_BIAS
GL_HISTOGRAM
GL_PROXY_HISTOGRAM
GL_HISTOGRAM_WIDTH
GL_HISTOGRAM_FORMAT
GL_HISTOGRAM_RED_SIZE
GL_HISTOGRAM_GREEN_SIZE
GL_HISTOGRAM_BLUE_SIZE
GL_HISTOGRAM_ALPHA_SIZE
GL_HISTOGRAM_LUMINANCE_SIZE
GL_HISTOGRAM_SINK
GL_MINMAX
GL_MINMAX_FORMAT
GL_MINMAX_SINK
GL_TABLE_TOO_LARGE
GL_COLOR_MATRIX
GL_COLOR_MATRIX_STACK_DEPTH
GL_MAX_COLOR_MATRIX_STACK_DEPTH
GL_POST_COLOR_MATRIX_RED_SCALE
GL_POST_COLOR_MATRIX_GREEN_SCALE
GL_POST_COLOR_MATRIX_BLUE_SCALE
GL_POST_COLOR_MATRIX_ALPHA_SCALE
GL_POST_COLOR_MATRIX_RED_BIAS
GL_POST_COLOR_MATRIX_GREEN_BIAS
GL_POST_COLOR_MATRIX_BLUE_BIAS
GL_POST_COLOR_MATRIX_ALPHA_BIAS
GL_COLOR_TABLE
GL_POST_CONVOLUTION_COLOR_TABLE
GL_POST_COLOR_MATRIX_COLOR_TABLE
GL_PROXY_COLOR_TABLE
GL_PROXY_POST_CONVOLUTION_COLOR_TABLE
GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE
GL_COLOR_TABLE_SCALE
GL_COLOR_TABLE_BIAS
GL_COLOR_TABLE_FORMAT
GL_COLOR_TABLE_WIDTH
GL_COLOR_TABLE_RED_SIZE
GL_COLOR_TABLE_GREEN_SIZE
GL_COLOR_TABLE_BLUE_SIZE
GL_COLOR_TABLE_ALPHA_SIZE
GL_COLOR_TABLE_LUMINANCE_SIZE
GL_COLOR_TABLE_INTENSITY_SIZE
GL_IGNORE_BORDER
GL_CONSTANT_BORDER
GL_WRAP_BORDER
GL_REPLICATE_BORDER
GL_CONVOLUTION_BORDER_COLOR</pre>
<p><a name="Functions(Imaging)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><u>glColorSubTable</u>(<i>target, start, count, format, data</i>)</div>
<div class="func"><u>glColorTable</u>(<i>target, internalFormat, width, format, data</i>)</div>
<div class="func"><u>glColorTableParameter</u>(<i>target, pname, params</i>)</div>
<div class="func"><u>glConvolutionFilter1D</u>(<i>target, internalFormat, width, format, data</i>)</div>
<div class="func"><u>glConvolutionFilter2D</u>(<i>target, internalFormat, width, height, format, data</i>)</div>
<div class="func"><u>glConvolutionParameter</u>(<i>target, pname, param/s</i>)</div>
<div class="func"><u>glCopyColorSubTable</u>(<i>target, start, x, y, width</i>)</div>
<div class="func"><u>glCopyColorTable</u>(<i>target, internalFormat, x, y, width</i>)</div>
<div class="func"><u>glCopyConvolutionFilter1D</u>(<i>target, internalFormat, x, y, width</i>)</div>
<div class="func"><u>glCopyConvolutionFilter2D</u>(<i>target, internalFormat, x, y, width, height</i>)</div>
<div class="func"><i>table</i> = <u>glGetColorTable</u>(<i>target, format, n</i>)</div>
<div class="func"><i>params</i> = <u>glGetColorTableParameter</u>(<i>target, pname, n</i>)</div>
<div class="func"><i>image</i> = <u>glGetConvolutionFilter</u>(<i>target, format, n</i>)</div>
<div class="func"><i>params</i> = <u>glGetConvolutionParameter</u>(<i>target, pname, n</i>)</div>
<div class="func"><i>values</i> = <u>glGetHistogram</u>(<i>target, reset, format, n</i>)</div>
<div class="func"><i>params</i> = <u>glGetHistogramParameter</u>(<i>target, pname, n</i>)</div>
<div class="func"><i>values</i> = <u>glGetMinmax</u>(<i>target, reset, format, n</i>)</div>
<div class="func"><i>params</i> = <u>glGetMinmaxParameter</u>(<i>target, pname, n</i>)</div>
<div class="func"><i>row, column</i> = <u>glGetSeparableFilter</u>(<i>target, format, nRow, nColumn</i>)</div>
<div class="func"><u>glHistogram</u>(<i>target, width, internalFormat, sink</i>)</div>
<div class="func"><u>glMinmax</u>(<i>target, internalFormat, sink</i>)</div>
<div class="func"><u>glResetHistogram</u>(<i>target</i>)</div>
<div class="func"><u>glResetMinmax</u>(<i>target</i>)</div>
<div class="func"><u>glSeparableFilter2D</u>(<i>target, internalFormat, width, height, format, row, column</i>)</div>
<a name="GLU_1.2" /><h4><a href="#Top">GLU 1.2</a></h4>
<p><a name="Attributes(GLU_1.2)"></a><strong class="subtitle"><a href="#Top">Attributes</a></strong>
<pre>GLU_VERSION_1_1
GLU_VERSION_1_2
GLU_INVALID_ENUM
GLU_INVALID_VALUE
GLU_OUT_OF_MEMORY
GLU_INCOMPATIBLE_GL_VERSION
GLU_VERSION
GLU_EXTENSIONS
GLU_TRUE
GLU_FALSE
GLU_SMOOTH
GLU_FLAT
GLU_NONE
GLU_POINT
GLU_LINE
GLU_FILL
GLU_SILHOUETTE
GLU_OUTSIDE
GLU_INSIDE
GLU_TESS_MAX_COORD
GLU_AUTO_LOAD_MATRIX
GLU_CULLING
GLU_SAMPLING_TOLERANCE
GLU_DISPLAY_MODE
GLU_PARAMETRIC_TOLERANCE
GLU_SAMPLING_METHOD
GLU_U_STEP
GLU_V_STEP
GLU_PATH_LENGTH
GLU_PARAMETRIC_ERROR
GLU_DOMAIN_DISTANCE
GLU_MAP1_TRIM_2
GLU_MAP1_TRIM_3
GLU_OUTLINE_POLYGON
GLU_OUTLINE_PATCH
GLU_CW
GLU_CCW
GLU_INTERIOR
GLU_EXTERIOR
GLU_UNKNOWN
GLU_BEGIN
GLU_VERTEX
GLU_END
GLU_ERROR
GLU_EDGE_FLAG
GLU_TESS_WINDING_ODD
GLU_TESS_WINDING_NONZERO
GLU_TESS_WINDING_POSITIVE
GLU_TESS_WINDING_NEGATIVE
GLU_TESS_WINDING_ABS_GEQ_TWO
GLU_MOVE
GLU_ENDLINE</pre>
<p><a name="Functions(GLU_1.2)"></a><strong class="subtitle"><a href="#Top">Functions</a></strong>
<div class="func"><i>string</i> = <u>gluErrorString</u>(<i>error</i>)</div>
<div class="func"><i>string</i> = <u>gluGetString</u>(<i>name</i>)</div>
<div class="func"><u>gluOrtho2D</u>(<i>left, right, bottom, top</i>)</div>
<div class="func"><u>gluPerspective</u>(<i>fovy, aspect, zNear, zFar</i>)</div>
<div class="func"><u>gluPickMatrix</u>(<i>x, y, delX, delY, viewport</i>)</div>
<div class="func"><u>gluLookAt</u>(<i>eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ</i>)</div>
<div class="func"><i>winX, winY, winZ</i> = <u>gluProject</u>(<i>objX, objY, objZ, model, proj, view</i>)</div>
<div class="func"><i>objX, objY, objZ</i> = <u>gluUnProject</u>(<i>winX, winY, winZ, model, proj, view</i>)</div>
<div class="func"><i>dataOut</i> = <u>gluScaleImage</u>(<i>format, wIn, hIn, dataIn, wOut, hOut, sizeOut</i>)</div>
<div class="func"><i>err</i> = <u>gluBuild1DMipmaps</u>(<i>target, internalFormat, width, format, data</i>)</div>
<div class="func"><i>err</i> = <u>gluBuild2DMipmaps</u>(<i>target, internalFormat, width, height, format, data</i>)</div>
<div class="func"><i>quad</i> = <u>gluNewQuadric</u>()</div>
<div class="func"><u>gluQuadricNormals</u>(<i>quad, normal</i>)</div>
<div class="func"><u>gluQuadricTexture</u>(<i>quad, texture</i>)</div>
<div class="func"><u>gluQuadricOrientation</u>(<i>quad, orientation</i>)</div>
<div class="func"><u>gluQuadricDrawStyle</u>(<i>quad, draw</i>)</div>
<div class="func"><u>gluCylinder</u>(<i>quad, base, top, height, slices, stacks</i>)</div>
<div class="func"><u>gluDisk</u>(<i>quad, inner, outer, slices, loops</i>)</div>
<div class="func"><u>gluPartialDisk</u>(<i>quad, inner, outer, slices, loops, start, sweep</i>)</div>
<div class="func"><u>gluSphere</u>(<i>quad, radius, slices, stacks</i>)</div>
<div class="func"><i>nurb</i> = <u>gluNewNurbsRenderer</u>()</div>
<div class="func"><u>gluBeginSurface</u>(<i>nurb</i>)</div>
<div class="func"><u>gluBeginCurve</u>(<i>nurb</i>)</div>
<div class="func"><u>gluEndCurve</u>(<i>nurb</i>)</div>
<div class="func"><u>gluEndSurface</u>(<i>nurb</i>)</div>
<div class="func"><u>gluBeginTrim</u>(<i>nurb</i>)</div>
<div class="func"><u>gluEndTrim</u>(<i>nurb</i>)</div>
<div class="func"><u>gluPwlCurve</u>(<i>nurb, count, data, stride, type</i>)</div>
<div class="func"><u>gluNurbsCurve</u>(<i>nurb, knotCount, knots, stride, control, order, type</i>)</div>
<div class="func"><u>gluNurbsSurface</u>(<i>nurb, sKnotCount, sKnots, tKnotCount, tKnots, sStride, tStride, control, sOrder, tOrder, type</i>)</div>
<div class="func"><u>gluLoadSamplingMatrices</u>(<i>nurb, model, perspective, view</i>)</div>
<div class="func"><u>gluNurbsProperty</u>(<i>nurb, property, value</i>)</div>
<div class="func"><i>data</i> = <u>gluGetNurbsProperty</u>(<i>nurb, property</i>)</div>
<div class="func"><u>gluDrawPath</u>(<i>path</i>)</div>
Tesselator as path system.<br>
<i>path</i> is a table with path points in following format:
<table border=1 frame="void" cellspacing=5 border-color=#FF0000>
<tr><td>.type</td><td>Point type. Should be GLU_MOVE, GLU_LINE or GLU_ENDLINE.</td></tr>
<tr><td>.x</td><td>Point position horizontal in pixels.</td></tr>
<tr><td>.y</td><td>Point position vertical in pixels.</td></tr>
<tr><td>.z</td><td>Point position in depth.</td></tr>
<tr><td>.r</td><td>Point red color channel. Optional.</td></tr>
<tr><td>.g</td><td>Point green color channel. Optional.</td></tr>
<tr><td>.b</td><td>Point blue color channel. Optional.</td></tr>
<tr><td>.a</td><td>Point alpha color channel. Optional.</td></tr>
</table>
Other elements beside points are following:
<table border=1 frame="void" cellspacing=5 border-color=#FF0000>
<tr><td>.nx</td><td>Horizontal direction of object normal. Optional.</td></tr>
<tr><td>.ny</td><td>Vertical direction of object normal. Optional.</td></tr>
<tr><td>.nz</td><td>Depth direction of object normal. Optional.</td></tr>
<tr><td>.windingrule</td><td>Tesselation winding rule. Optional.</td></tr>
</table>
<a name="FL_0.4" /><h4><a href="#Top">FL 0.4</a></h4>
<div class="func"><u>flConvolutionFilter</u>(<i>w, h, filter</i>)</div>
Executes a convolution filter with width <i>w</i>, height <i>h</i> and kernel <i>filter</i> on framebuffer.<br>
Beware: Copies framebuffer to texture and draws it multiple times to accumulation buffer.
<div class="func"><i>font</i> = <u>flCreateFont</u>(<i>fontname, fontsize, bold, italic</i>)</div>
Returns a font object with given properties.
<div class="func"><i>fontname, fontsize, bold, italic</i> = <u>font:getdata</u>()</div>
Returns font properties, defined by object creation.
<div class="func"><i>width, height, ascent, descent, internal_lead, external_lead</i> = <u>font:textextents</u>(<i>text</i>)</div>
Returns text sizes of given <i>text</i> with font properties.
<div class="func"><i>textpath</i> = <u>font:getpath</u>(<i>text</i>)</div>
Returns table <i>textpath</i> with outline information of given <i>text</i> with font properties.<br>
Every table element is an outline point. Every point holds following information:<br>
<table border=1 frame="void" cellspacing=5 border-color=#FF0000>
<tr><td>.type</td><td>Point type. Could be GLU_MOVE, GLU_LINE or GLU_ENDLINE.</td></tr>
<tr><td>.x</td><td>Point position horizontal in pixels.</td></tr>
<tr><td>.y</td><td>Point position vertical in pixels.</td></tr>
<tr><td>.z</td><td>Point position in depth. Always 0.</td></tr>
</table>
<div class="func"><i>version</i> = <u>flGetVersion</u>()</div>
Returns FLuaG version as string.
<div class="func"><i>image</i> = <u>flLoadPNG</u>(<i>filename</i>)</div>
Returns table <i>image</i> with following PNG information of given file <i>filename</i>:
<table border=1 frame="void" cellspacing=5 border-color=#FF0000>
<tr><td>.width</td><td>Image width in pixels.</td></tr>
<tr><td>.height</td><td>Image height in pixels.</td></tr>
<tr><td>[i]</td><td>RGBA data of image.</td></tr>
</table>
<div class="func"><u>flSavePNG</u>(<i>filename, image</i>)</div>
Saves table <i>image</i> as PNG file <i>filename</i>. <i>image</i> must have the same format like <i>flLoadPNG</i> returns.
<a name="FAQ" /><h2><a href="#Top">FAQ</a></h2>
<p><b><u>Why OpenGL and not Direct3D?</u></b><br>
I don't want to discuss the benefits of OGL and D3D, but one point was the thought of making it platform independent.
<p><b><u>Why Lua? Why not Python/Ruby/...?</u></b><br>
Lua is faster, smaller and easier to learn. Accept it.
<p><b><u>Why i cannot compile/execute it?</u></b><br>
Read the error message. Maybe you forgot to fix file paths.
<p><b><u>How do i realize *** ?</u></b><br>
Look into the examples you got or learn Lua/OpenGL (see <a href="#Links">Links</a>).
<p><b><u>How i can use more than one clip? / How i can use audio data for drawing?</u></b><br>
Send your clip as userdata to the filter process. It becomes a Lua object with access to video and audio data.
<p><b><u>How i can speed up my filters?</u></b><br>
Look for OpenGL performance tips and minimize code in GetFrame/GetSamples function definition.
<p><b><u>How i should work with FLuaG?</u></b><br>
It's recommend to work in 2 windows:<br>
-AvsP for preview + Avisynth script edit.<br>
-Any Lua editor like Scite or Notepad++.
<p><b><u>I miss function *** . Could i get it?</u></b><br>
Maybe. Ask!
<p><b><u>Licence?</u></b><br>
<a href="http://www.gnu.org/licenses/lgpl-3.0.html">LGPL</a>.
<a name="Links" /><h2><a href="#Top">Links</a></h2>
<p><font size=4><b><u>Avisynth</u></b></font>
<ul>
<li><a href="http://avisynth.org/mediawiki/Main_Page">Wiki</a></li>
<li><a href="http://forum.doom9.org/">Doom9 forum</a></li>
</ul>
<p><font size=4><b><u>Lua</u></b></font>
<ul>
<li><a href="http://www.lua.org/manual/5.1/">Reference</a></li>
<li><a href="http://lua-users.org/wiki/TutorialDirectory">Tutorial directory</a></li>
<li><a href="http://www.lua.org/pil/">PIL</a></li>
<li><a href="http://en.wikipedia.org/wiki/Lua_(programming_language)">Wiki entry</a></li>
<li><a href="http://www.lua.org/demo.html">Live demo</a></li>
</ul>
<p><font size=4><b><u>OpenGL</u></b></font>
<ul>
<li><a href="http://www.opengl.org/sdk/docs/">Reference</a></li>
<li><a href="http://www.opengl.org/documentation/red_book/">Red book</a></li>
<li><a href="http://nehe.gamedev.net/">Nehe tutorials</a></li>
<li><a href="http://www.swiftless.com/opengltuts.html">Swiftless tutorials</a></li>
</ul>
<p><font size=4><b><u>FLuaG</u></b></font>
<ul>
<li><a href="http://forum.doom9.org/showthread.php?t=161852">Doom9 thread</a></li>
</ul>
<hr>
<font size=1><b>Written by Youka, 26.04.2012</b></font>
</body>
</html>